<!DOCTYPE HTML>
<html>
	<head>
		<meta charset="utf-8"/>
		<meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no"/>
		<meta name="HandheldFriendly" content="true"/>
		<meta name="MobileOptimized" content="320"/>
		<title>Hello H5+</title>
		<script type="text/javascript" src="../js/common.js"></script>
		<script type="text/javascript">
var pushServer = "http://demo.dcloud.net.cn/push/?";
var message = null;
// 监听plusready事件  
document.addEventListener( "plusready", function(){
	message = document.getElementById("message");
	// 监听点击消息事件
	plus.push.addEventListener( "click", function( msg ) {
		// 判断是从本地创建还是离线推送的消息
		switch( msg.payload ) {
			case "LocalMSG":
				outSet( "点击本地创建消息启动：" );
			break;
			default:
				outSet( "点击离线推送消息启动：");
			break;
		}
		// 提示点击的内容
		plus.nativeUI.alert( msg.content );
		// 处理其它数据
		logoutPushMsg( msg );
	}, false );
	// 监听在线消息事件
	plus.push.addEventListener( "receive", function( msg ) {
		if ( msg.aps ) {  // Apple APNS message
			outSet( "接收到在线APNS消息：" );
		} else {
			outSet( "接收到在线透传消息：" );
		}
		logoutPushMsg( msg );
	}, false );
}, false );

/**
 * 日志输入推送消息内容
 */
function logoutPushMsg( msg ) {
	outLine( "title: "+msg.title );
	outLine( "content: "+msg.content );
	if ( msg.payload ) {
		if ( typeof(msg.payload)=="string" ) {
			outLine( "payload(String): "+msg.payload );
		} else {
			outLine( "payload(JSON): "+JSON.stringify(msg.payload) );
		}
	} else {
		outLine( "payload: undefined" );
	}
	if ( msg.aps ) {
		outLine( "aps: "+JSON.stringify(msg.aps) );
	}
}

/**
 * 获取本地推送标识信息
 */
function getPushInfo(){
	var info = plus.push.getClientInfo();
	outSet( "获取客户端推送标识信息：" );
	outLine( "token: "+info.token );
	outLine( "clientid: "+info.clientid );
	outLine( "appid: "+info.appid );
	outLine( "appkey: "+info.appkey );
}
/**
 * 本地创建一条推动消息
 */
function createLocalPushMsg(){
	var options = {cover:false};
	var str = dateToStr(new Date());
	str += ": 欢迎使用HTML5+创建本地消息！";
	plus.push.createMessage( str, "LocalMSG", options );
	outSet( "创建本地消息成功！" );
	outLine( "请到系统消息中心查看！" );
	if(plus.os.name=="iOS"){
		outLine('*如果无法创建消息，请到"设置"->"通知"中配置应用在通知中心显示!');
	}
}
/**
 * 读取所有推送消息
 */
function listAllPush(){
	var msgs=null;
	switch ( plus.os.name ) {
		case "Android":
		msgs = plus.push.getAllMessage();
		break;
		default:
		break;
	}
	if ( !msgs ) {
		outSet( "此平台不支持枚举推送消息列表！" );
		return;
	}
	outSet( "枚举消息列表（"+msgs.length+"）：" );
	for ( var i in msgs ) {
		var msg = msgs[i];
		outLine( i+": "+msg.title+" - "+msg.content );
	}
}
/**
 * 清空所有推动消息
 */
function clearAllPush(){
	plus.push.clear();
	outSet( "清空所有推送消息成功！" );
}
/**
 * 请求‘简单通知’推送消息
 */
function requireNotiMsg(){
	if(navigator.userAgent.indexOf('StreamApp')>0){
		plus.nativeUI.toast('当前环境暂不支持发送推送消息');
		return;
	}
	var url = pushServer+'type=noti&appid='+encodeURIComponent(plus.runtime.appid);
	url += ('&cid='+encodeURIComponent(plus.push.getClientInfo().clientid));
	if(plus.os.name == 'iOS'){
		url += ('&token='+encodeURIComponent(plus.push.getClientInfo().token));
	}
	url += ('&title='+encodeURIComponent('Hello H5+'));
	url += ('&content='+encodeURIComponent('欢迎回来体验HTML5 plus应用！'));
	url += ('&version='+encodeURIComponent(plus.runtime.version));
	plus.runtime.openURL( url );
}
/**
 * 请求‘打开网页’推送消息
 */
function requireLinkMsg(){
	if(navigator.userAgent.indexOf('StreamApp')>0){
		plus.nativeUI.toast('当前环境暂不支持发送推送消息');
		return;
	}
	var url = pushServer+"type=link&appid="+encodeURIComponent(plus.runtime.appid);
	url += ('&cid='+encodeURIComponent(plus.push.getClientInfo().clientid));
	if(plus.os.name == 'iOS'){
		url += ('&token='+encodeURIComponent(plus.push.getClientInfo().token));
	}
	url += ('&title='+encodeURIComponent('HBuilder飞一样的编码'));
	url += ('&content='+encodeURIComponent('看HBuilder如何追求代码编写速度的极致！立即去瞧一瞧？'));
	url += ('&url='+encodeURIComponent('http://www.dcloud.io/'));
	url += ('&version='+encodeURIComponent(plus.runtime.version));
	plus.runtime.openURL( url );
}
/**
 * 请求‘下载链接’推送消息
 */
function requireDownMsg(){
	if(navigator.userAgent.indexOf('StreamApp')>0){
		plus.nativeUI.toast('当前环境暂不支持发送推送消息');
		return;
	}
	if ( plus.os.name != "Android" ) {
		plus.nativeUI.alert( "此平台不支持！" );
		return;
	}
	var url = pushServer+'type=down&appid='+encodeURIComponent(plus.runtime.appid);
	url += ('&cid='+encodeURIComponent(plus.push.getClientInfo().clientid));
	url += ('&title='+encodeURIComponent('Hello H5+'));
	url += ('&content='+encodeURIComponent('新版本发布了！立即下载体验？'));
	url += ('&ptitle='+encodeURIComponent('Hello H5+'));
	url += ('&pcontent='+encodeURIComponent('1. 优化用户体验;\n2. 修复在Android2.3.x某些设备可能异常退出的问题.'));
	url += ('&dtitle='+encodeURIComponent('下载Hello H5+'));
	url += ('&durl='+encodeURIComponent('http://www.dcloud.io/helloh5/HelloH5.apk'));
	url += ('&version='+encodeURIComponent(plus.runtime.version));
	plus.runtime.openURL( url );
}
/**
 * 请求‘透传数据’推送消息
 */
function requireTranMsg(){
	if(navigator.userAgent.indexOf('StreamApp')>0){
		plus.nativeUI.toast('当前环境暂不支持发送推送消息');
		return;
	}
	var url = pushServer+'type=tran&appid='+encodeURIComponent(plus.runtime.appid);
	url += ('&cid='+encodeURIComponent(plus.push.getClientInfo().clientid));
	if(plus.os.name == 'iOS'){
		url += ('&token='+encodeURIComponent(plus.push.getClientInfo().token));
	}
	url += ('&title='+encodeURIComponent('Hello H5+'));
	url += ('&content='+encodeURIComponent('带透传数据推送通知，可通过plus.push API获取数据并进行业务逻辑处理！'));
	url += ('&payload='+encodeURIComponent('{title:"Hello H5+ Test",content:"test content",payload:{id:"1234567890"}}'));
	url += ('&version='+encodeURIComponent(plus.runtime.version));
	plus.runtime.openURL( url );
}
		</script>
		<link rel="stylesheet" href="../css/common.css" type="text/css" charset="utf-8"/>
	</head>
	<body>
		<header id="header">
			<div class="nvbt iback" onclick="back(true)"></div>
			<div class="nvtt">Push</div>
			<div class="nvbt idoc" onclick="openDoc('Push Document','/doc/push.html')"></div>
		</header>
		<div id="dcontent" class="dcontent">
			<div class="button" onclick="requireNotiMsg()">发送"普通通知"消息</div>
			<div class="button" onclick="requireLinkMsg()">发送"打开网页"消息</div>
			<div class="button" onclick="requireDownMsg()">发送"下载链接"消息</div>
			<div class="button" onclick="requireTranMsg()">发送"透传数据"消息</div>
			<br/>
			<ul id="dlist" class="dlist">
				<li class="ditem" onclick="getPushInfo()">获取客户端推送标识</li>
				<li class="ditem" onclick="createLocalPushMsg()">创建本地消息</li>
				<li class="ditem" onclick="listAllPush()">枚举推送消息</li>
				<li class="ditem" onclick="clearAllPush()">清空推送消息</li>
				<!--<li class="ditem" onclick="plus.push.setAutoNotification(false)">关闭自动显示消息</li>
				<li class="ditem" onclick="plus.push.setAutoNotification(true)">开启自动显示消息</li>-->
			</ul>
		</div>
		<div id="output">
Push模块管理推送消息功能，可以实现在线、离线的消息推送，通过plus.push可获取推送消息管理对象。
		</div>
	</body>
	<script type="text/javascript" src="../js/immersed.js" ></script>
</html>